<?php

namespace app\common\controller;

use think\Controller;

//公共控制器
class Home extends Controller
{
    //过滤掉一些不需要登录的方法
    public $NoLogin = [];

    public function __construct()
    {
        //继承公共控制器
        parent::__construct();

        $this->BusinessModel = model('Business.Business');

        //如果获取当前我们所访问的控制器方法
        $action = $this->request->action();

        // in_array($action, $this->NoLogin); //在 就说明不用登录 不在就说明 需要登录
        //如果有 * 意味着 所有的方法都不需要登录
        //两个都不在数组中，就说明必须要登录了
        if(!in_array($action, $this->NoLogin) && !in_array("*", $this->NoLogin))
        {
            $this->IsLogin();
        }
    }

    /**
     * 判断是否登录
     * @param $redirect 重定向参数 true为默认跳转 false为不跳转
     * @return array 如果 redirect 为 false的时候， 就返回登录信息
     */
    public function IsLogin($redirect = true, $url = '')
    {
        $busid = cookie('busid') ? trim(cookie('busid')) : 0;
        $mobile = cookie('mobile') ? trim(cookie('mobile')) : '';
        
        //返回到当前界面
        // $url = empty($url) ? $this->request->url() : $url;

        //返回上一个界面
        $url = empty($url) ? $this->request->server('HTTP_REFERER') : $url;
        cookie('redirect', $url);

        if(!$busid || empty($mobile))
        {
            cookie('busid', null);
            cookie('mobile', null);
            if($redirect)
            {
                $this->error('请重新登录', url('home/index/login'));
                exit;
            }else
            {
                return null;
            }
        }

        //根据id和手机号 找出具体人
        $where = ['id'=>$busid, 'mobile'=>$mobile];
        $AutoLogin = $this->BusinessModel->where($where)->find();

        if(!$AutoLogin)
        {
            //删除掉cookie 就说明cookie有可能是伪造的
            cookie('busid', null);
            cookie('mobile', null);
            if($redirect)
            {
                $this->error('非法登录', url('home/index/login'));
                exit;
            }else
            {
                return null;
            }
            
        }

        //数据赋值到模板上去
        $this->view->assign('AutoLogin', $AutoLogin);
        return $AutoLogin;
    }
}
